头文件

<cctype> (ctype.h)

字符处理函数

这个头文件定义了分类和转化字符的函数集

函数

这些函数把等价于一个字符的 int 型变量作为参数,并且返回一个 int 型值,这个返回值即可以作为一个字符,又可以代表一个布尔值:一个值为 0int 型变量意味着 false,而非 0int 型变量代表 true

这里有两个函数集:

字符分类函数

这些函数会检查作为参数传递进来的字符是否属于某一特定类别:

函数名 描述
isalnum 检查字符是否是字母或数字(alphanumeric) (函数)
isalpha 检查字符是否是字母(alphabetic) (函数)
isblank (c++11) 检查字符是否是空白符(blank) (函数)
iscntrl 检查字符是否是控制字符(control character) (函数)
isdigit 检查字符是否是十进制数字(dicimal digit) (函数)
isgraph 检查字符是否有图形表示(graphical representation) (函数)
islower 检查字符是否是小写字母(lowercase letter) (函数)
isprint 检查字符是否可打印(printable) (函数)
ispunct 检查字符是否是标点符号(punctuation) (函数)
isspace 检查字符是否是空格符(white-space) (函数)
isupper 检查字符是否是大写字母(uppercase letter) (函数)
isxdigit 检查字符是否是十六进制数字(hexadecimal) (函数)

字符转化函数

这是两个转化字母大小写的函数:

函数名 描述
tolower 将大写字母转化为小写 (函数)
toupper 将小写字母转化为大写 (函数)

对于第一个函数集,这里有一张各个函数将原始的127个ASCII字符集作为参数的返回值表 (表格中的 x 表明这个函数将相应字符作为参数时返回 true )

ASCII值 字符 iscntrl isblank isspace isupper islower isalpha isdigit isxdigit isalnum ispunct isgraph isprint
0x00 .. 0x008 NUL,(其他控制码) x
0x09 tab(‘\t’) x x x
0x0A .. 0x0D (空格控制码 : ‘\f’,’\v’,’\n’,’\r’) x x
0x0E .. 0x1F (其他控制码) x
0x20 空格(‘ ‘) x x x
0x21 .. 0x2F !”#$%&’()*+,-./ x x x
0x30 .. 0x39 0123456789 x x x x x
0x3a .. 0x40 :;\<=>?@ x x x
0x41 .. 0x46 ABCDEF x x x x x x
0x47 .. 0x5A GHIJKLMNOPQRSTUVWXYZ x x x x x
0x5B .. 0x60 [\]^_` x x x
0x61 .. 0x66 abcdef x x x x x x
0x67 .. 0x7A ghijklmnopqrstuvwxyz x x x x x
0x7B .. 0x7E {\ } x x x
0x7F (DEL) x

扩展字符集 (大于 0x7F) 可能会因为环境和平台的缘故而属于不同的种类。通常规则是,在大多数支持扩展字符集的平台下,标准 C 环境的 isgraphisprint 函数返回 true